bitkeeper revision 1.103 (3e5ce3edCqQ1qazfrrTapwLSJfBo_Q)
authorkaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk>
Wed, 26 Feb 2003 15:57:33 +0000 (15:57 +0000)
committerkaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk>
Wed, 26 Feb 2003 15:57:33 +0000 (15:57 +0000)
network.c, dev.c:
  A few more network cleanups.

xen/net/dev.c
xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/network/network.c

index 8c0e5522e0472e7531d521bdbde63a3b84ad70b9..25aa35fd78b364fa2588c43d1f821b3c73592ffa 100644 (file)
@@ -38,7 +38,7 @@
 #define rtnl_lock() ((void)0)
 #define rtnl_unlock() ((void)0)
 
-#if 1
+#if 0
 #define DPRINTK(_f, _a...) printk(_f , ## _a)
 #else 
 #define DPRINTK(_f, _a...) ((void)0)
@@ -742,8 +742,8 @@ static void net_tx_action(unsigned long unused)
 
         if ( (skb = alloc_skb_nodata(GFP_ATOMIC)) == NULL )
         {
-            add_to_net_schedule_list_tail(vif);
             printk("Out of memory in net_tx_action()!\n");
+            tx->status = RING_STATUS_BAD_PAGE;
             break;
         }
         
@@ -769,8 +769,8 @@ static void net_tx_action(unsigned long unused)
         /* Transmit should always work, or the queue would be stopped. */
         if ( dev->hard_start_xmit(skb, dev) != 0 )
         {
-            add_to_net_schedule_list_tail(vif);
             printk("Weird failure in hard_start_xmit!\n");
+            kfree_skb(skb);
             break;
         }
     }
index 4c4ace1006da5fccc5c39863d587d8e603dbbaa4..8e742007cf478a2938125a818643f5e2042d5503 100644 (file)
@@ -220,7 +220,7 @@ static void network_free_rx_buffers(struct net_device *dev)
     for ( i = np->rx_idx; i != np->net_ring->rx_prod; i = RX_RING_INC(i) )
     {
         skb = np->rx_skb_ring[i];
-        dev_kfree_skb(skb);
+        dev_kfree_skb_any(skb);
     }
 }
 
@@ -228,10 +228,10 @@ static int network_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
     unsigned int i;
     struct net_private *np = (struct net_private *)dev->priv;
-    
+
     if ( np->tx_full )
     {
-        printk(KERN_WARNING "%s: full queue wasn't stopped!\n", dev->name);
+        printk(KERN_ALERT "%s: full queue wasn't stopped!\n", dev->name);
         netif_stop_queue(dev);
         return -ENOBUFS;
     }
@@ -239,10 +239,11 @@ static int network_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
     if ( (((unsigned long)skb->data & ~PAGE_MASK) + skb->len) >= PAGE_SIZE )
     {
-        struct sk_buff *new_skb = alloc_skb(RX_BUF_SIZE, GFP_KERNEL);
+        struct sk_buff *new_skb = dev_alloc_skb(RX_BUF_SIZE);
+        if ( new_skb == NULL ) return 1;
         skb_put(new_skb, skb->len);
         memcpy(new_skb->data, skb->data, skb->len);
-        kfree_skb(skb);
+        dev_kfree_skb(skb);
         skb = new_skb;
     }